package com.itheima.d4_arrays;

import java.util.Arrays;
import java.util.Comparator;

//目标：掌握Arrays工具类sort方法自定义排序规则的方式
public class Demo02 {
    public static void main(String[] args) {
        /**
         * 方式一：让对象的类实现Comparable接口，重写compareTo方法，来制定比较规则
         * 方式二：创建Comparator比较器接口的匿名内部类对象，然后制定比较规则
         */
        Student[] stus = new Student[4];
        stus[0] = new Student("蜘蛛精", 169.5, 23);
        stus[1] = new Student("紫霞", 163.2, 26);
        stus[2] = new Student("青霞", 163.8, 26);
        stus[3] = new Student("至尊宝", 167.5, 24);

        //需求：利用Arrays的sort方法对stus数组，按照年龄升序排序

        //尝试直接用Arrays.sort(stus)进行排序
        //Arrays.sort(stus);
        //解决：提供排序规则
        //System.out.println(Arrays.toString(stus));

        //方案一：让数组中数据的类去实现Comparable接口，重写compareTo方法，这个方法用来制定排序规则！


        //方案二：调用另外一个重载的sort方法，传入数组和Comparator比较器对象
        //需求：方案二用年龄降序排序
        Arrays.sort(stus,new Comparator<Student>(){
            @Override
            public int compare(Student o1, Student o2) {
                //重写的方法：用来制定排序规则！

                //1.获取两个学生的年龄
                int age1 = o1.getAge();
                int age2 = o2.getAge();

                //2.让两个数据做减法，得到整数结果
                int result = age2 - age1;

                return result;
            }
        });

        System.out.println(Arrays.toString(stus));
    }
}
